home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 1999 #2 / Amiga Plus CD - 1999 - No. 2.iso / System / mui / developer / autodocs / mui_area.doc < prev    next >
Text File  |  1977-12-31  |  39KB  |  1,418 lines

  1. TABLE OF CONTENTS
  2.  
  3. Area.mui/Area.mui
  4. Area.mui/MUIA_Background
  5. Area.mui/MUIA_BottomEdge
  6. Area.mui/MUIA_ContextMenu
  7. Area.mui/MUIA_ContextMenuTrigger
  8. Area.mui/MUIA_ControlChar
  9. Area.mui/MUIA_CycleChain
  10. Area.mui/MUIA_Disabled
  11. Area.mui/MUIA_Draggable
  12. Area.mui/MUIA_Dropable
  13. Area.mui/MUIA_ExportID
  14. Area.mui/MUIA_FillArea
  15. Area.mui/MUIA_FixHeight
  16. Area.mui/MUIA_FixHeightTxt
  17. Area.mui/MUIA_FixWidth
  18. Area.mui/MUIA_FixWidthTxt
  19. Area.mui/MUIA_Font
  20. Area.mui/MUIA_Frame
  21. Area.mui/MUIA_FramePhantomHoriz
  22. Area.mui/MUIA_FrameTitle
  23. Area.mui/MUIA_Height
  24. Area.mui/MUIA_HorizDisappear
  25. Area.mui/MUIA_HorizWeight
  26. Area.mui/MUIA_InnerBottom
  27. Area.mui/MUIA_InnerLeft
  28. Area.mui/MUIA_InnerRight
  29. Area.mui/MUIA_InnerTop
  30. Area.mui/MUIA_InputMode
  31. Area.mui/MUIA_LeftEdge
  32. Area.mui/MUIA_MaxHeight
  33. Area.mui/MUIA_MaxWidth
  34. Area.mui/MUIA_Pressed
  35. Area.mui/MUIA_RightEdge
  36. Area.mui/MUIA_Selected
  37. Area.mui/MUIA_ShortHelp
  38. Area.mui/MUIA_ShowMe
  39. Area.mui/MUIA_ShowSelState
  40. Area.mui/MUIA_Timer
  41. Area.mui/MUIA_TopEdge
  42. Area.mui/MUIA_VertDisappear
  43. Area.mui/MUIA_VertWeight
  44. Area.mui/MUIA_Weight
  45. Area.mui/MUIA_Width
  46. Area.mui/MUIA_Window
  47. Area.mui/MUIA_WindowObject
  48. Area.mui/MUIM_AskMinMax
  49. Area.mui/MUIM_Cleanup
  50. Area.mui/MUIM_ContextMenuBuild
  51. Area.mui/MUIM_ContextMenuChoice
  52. Area.mui/MUIM_DragBegin
  53. Area.mui/MUIM_DragDrop
  54. Area.mui/MUIM_DragFinish
  55. Area.mui/MUIM_DragQuery
  56. Area.mui/MUIM_DragReport
  57. Area.mui/MUIM_Draw
  58. Area.mui/MUIM_DrawBackground
  59. Area.mui/MUIM_HandleEvent
  60. Area.mui/MUIM_HandleInput
  61. Area.mui/MUIM_Hide
  62. Area.mui/MUIM_Setup
  63. Area.mui/MUIM_Show
  64. Area.mui/Area.mui
  65.  
  66.     Area class is a super class for every other MUI class
  67.     except windows and applications. It holds information
  68.     about an objects current position, size and weight
  69.     and manages frames, fonts and backgrounds.
  70.  
  71.     Additionally, area class handles the user input. By
  72.     setting an objects MUIA_InputMode, you can make it
  73.     behave like a button or like a toggle gadget. That's
  74.     why MUI doesn't offer an extra button class. A button
  75.     is simply a text object with a raised frame and a relverify
  76.     input mode. Since especially group class is a subclass
  77.     of area, you can create rather complex buttons consisting
  78.     of many other display elements.
  79. Area.mui/MUIA_Background
  80.  
  81.     NAME
  82.     MUIA_Background -- (V4 ) [IS.], LONG
  83.  
  84.     FUNCTION
  85.     Adjust the background for an object.
  86.  
  87.     Every MUI object has its own background setting.
  88.     The background is displayed "behind" the actual
  89.     object contents, e.g. behind a the text of a
  90.     text object or behind the image of an image object.
  91.  
  92.     This attribute takes the same values as MUIA_Image_Spec,
  93.     please refer to autodocs of image class for a complete
  94.     description.
  95.  
  96.     An object without a specific background setting will
  97.     inherit the pattern from its parent group. The default
  98.     background for a window and many other background
  99.     patterns are adjustable with the preferences program.
  100.  
  101.     Only a few MUII_xxxxxxx tags make sense as background.
  102.     Important are:
  103.  
  104.     MUII_ButtonBack:
  105.        You have to set this when you create a button gadget.
  106.        Thus, your button will be displayed in the users
  107.        preferred style.
  108.  
  109.     MUII_TextBack:
  110.        Set this when you create a text object with a TextFrame,
  111.        e.g. some kind of status line. Do *not* use MUII_TextBack
  112.        for simple text without frame (e.g. gadget labels).
  113.  
  114.     MUII_BACKGROUND
  115.     MUII_SHADOW
  116.     MUII_SHINE
  117.     MUII_FILL
  118.     MUII_SHADOWBACK
  119.     MUII_SHADOWFILL
  120.     MUII_SHADOWSHINE
  121.     MUII_FILLBACK
  122.     MUII_FILLSHINE
  123.     MUII_SHINEBACK
  124.     MUII_SHINEBACK2:
  125.        One of MUI's predefined pattern. These are not
  126.        configurable by the user and will always look the
  127.        same.
  128.  
  129.     Note: It is *important* that you test your programs with
  130.           a fancy pattern configuration. With the default
  131.           setting you won't notice any errors in your backgrounds.
  132. Area.mui/MUIA_BottomEdge
  133.  
  134.     NAME
  135.     MUIA_BottomEdge -- (V4 ) [..G], LONG
  136.  
  137.     FUNCTION
  138.     You can use this to read the current position and
  139.     dimension of an object, if you e.g. need it to pop
  140.     up some requester below.
  141.  
  142.     Of course, this attribute is only valid when the
  143.     parent window of the object is currently open.
  144.  
  145.     SEE ALSO
  146.     MUIA_TopEdge, MUIA_Width, MUIA_Height,
  147.     MUIA_RightEdge, MUIA_LeftEdge
  148. Area.mui/MUIA_ContextMenu
  149.  
  150.     NAME
  151.     MUIA_ContextMenu -- (V11) [ISG], Object *
  152.  
  153.     FUNCTION
  154.     Specifies a context sensitive popup menu for the current
  155.     object. For MUI, popup menus are nothing else but standard
  156.     intuition menus, so you must specify a pointer to a
  157.     MUI menustrip object (e.g. something returned from
  158.     MUI_MakeObject(MUIO_MenustripNM,...)) here.
  159.  
  160.     Whenever the user hits the RMB and the mouse is above the parent
  161.     object, MUI will present the popup menu instead of the windows
  162.     menu.
  163.  
  164.     Note: MUI will *not* dispose the MUIA_ContextMenu object when
  165.     the object is disposed. You must take care of the menustrip
  166.     object yourself. This is because menustrip objects of
  167.     MUIA_ContextMenu do not actually "belong" to their parent
  168.     objects, it's just a "reference". You are allowed to use
  169.     a single menustrip object as MUIA_ContextMenu for different
  170.     objects of the same window. Do *not* share with objects in
  171.     other windows or with the default menu of a window or
  172.     an application!
  173.  
  174.     If the user selects an item, the object will receive
  175.     a MUIM_ContextMenuChoice method containing the selected
  176.     menuitem object. If you built your menustrip tree with
  177.     MUI_MakeObject(MUIO_MenustripNM,...), you will find the
  178.     nm_UserData of your menu entry in muiUserData(menuitem).
  179.     If you have control over methods because you are a
  180.     subclass, you can immediately take approriate actions 
  181.     when receiving MUIM_ContextMenuChoice.
  182.  
  183.     If you dont have a subclass or dont override
  184.     MUIM_ContextMenuChoice, the method will finally reach
  185.     area class and will set the attribute MUIA_ContextMenuTrigger
  186.     to the appropriate menuitem object. This allows you to react on
  187.     context menu selections by simple notification and eliminates
  188.     the need of writing a subclass just for this purpose.
  189.  
  190.     Note: Subclasses are always the better solution!
  191.  
  192.     There is also a possibility to dynamically create popup menus
  193.     on the fly. See MUIM_ContextMenuBuild for details.
  194.  
  195.     NOTES
  196.     MUI uses the same tree-like technique as always (e.g. with
  197.     drag&drop) to find out whichs context menu to use on a
  198.     certain mouse position. This allows you to have a context
  199.     menu for a group and different context menus for its
  200.     children. The MUI preferences program makes use of that
  201.     feature by allowing to control a single gadget or a whole
  202.     page of gadgets with popup menus.
  203.  
  204.     SEE ALSO
  205.     MUIA_ContextMenuTrigger, MUIM_ContextMenuChoice,
  206.     MUIM_ContextMenuBuild
  207. Area.mui/MUIA_ContextMenuTrigger
  208.  
  209.     NAME
  210.     MUIA_ContextMenuTrigger -- (V11) [..G], Object *
  211.  
  212.     FUNCTION
  213.     Allows reacting on context menus with notificaton.
  214.     When the MUIM_ContextMenuChoice method reaches area class
  215.     because you did not override it in a subclass, it sets
  216.     MUIA_ContextMenuTrigger to the received paremeter which
  217.     is a pointer to the user-selected menuitem object.
  218.  
  219.     See MUIA_ContextMenu for details.
  220.  
  221.     SEE ALSO
  222.     MUIA_ContextMenu, MUIM_ContextMenuChoice, MUIM_ContextMenuBuild
  223. Area.mui/MUIA_ControlChar
  224.  
  225.     NAME
  226.     MUIA_ControlChar -- (V4 ) [ISG], char
  227.  
  228.     FUNCTION
  229.     Pressing the control char will have the same effect
  230.     as pressing return if the object was active.
  231.     
  232.     This can be used to create old style key shortcuts.
  233.  
  234.     Note: Using an uppercase control char will force
  235.           the user to press shift.
  236.  
  237.     SEE ALSO
  238.     mui.h / KeyButton() macro
  239. Area.mui/MUIA_CycleChain
  240.  
  241.     NAME
  242.     MUIA_CycleChain -- (V11) [ISG], LONG
  243.  
  244.     FUNCTION
  245.     MUI 3 introduces a new keyboard cycle chain system. All you 
  246.     have to do is to set  MUIA_CycleChain to 1 for every object 
  247.     that you want to have in your chain, MUI does the rest 
  248.     automatically. The old MUIM_Window_SetCycleChain will continue 
  249.     to work but is considered obsolete.
  250.  
  251.     SEE ALSO
  252.     Window.mui/MUIM_Window_SetCycleChain
  253. Area.mui/MUIA_Disabled
  254.  
  255.     NAME
  256.     MUIA_Disabled -- (V4 ) [ISG], BOOL
  257.  
  258.     FUNCTION
  259.     Disable or enable a gadget. Setting this attribute
  260.     causes a gadget to become disabled, it gets a ghost
  261.     pattern and doesn't respond to user input any longer.
  262.  
  263.     Disabled gadgets cannot be activated with the TAB key.
  264.  
  265.     Using MUIA_Disable on a group of objects will disable
  266.     all objects within that group.
  267.  
  268.     EXAMPLE
  269.     /* we have a radio button gadget with three         */
  270.     /* entries, the third should enable a string gadget */
  271.     /* with additional parameters                       */
  272.  
  273.     DoMethod(radio, MUIM_Notify, MUIA_Radio_Active, 0,
  274.        string, 3, MUIM_Set, MUIA_Disabled, TRUE);
  275.  
  276.     DoMethod(radio, MUIM_Notify, MUIA_Radio_Active, 1,
  277.        string, 3, MUIM_Set, MUIA_Disabled, TRUE);
  278.  
  279.     DoMethod(radio, MUIM_Notify, MUIA_Radio_Active, 2,
  280.        string, 3, MUIM_Set, MUIA_Disabled, FALSE);
  281. Area.mui/MUIA_Draggable
  282.  
  283.     NAME
  284.     MUIA_Draggable -- (V11) [ISG], BOOL
  285.  
  286.     FUNCTION
  287.     Set this if you want the complete object to be
  288.     dragable for D&D operations.
  289. Area.mui/MUIA_Dropable
  290.  
  291.     NAME
  292.     MUIA_Dropable -- (V11) [ISG], BOOL
  293.  
  294.     FUNCTION
  295.     Only objects with this attribute set to TRUE will be asked
  296.     if they want to become an active Drag & Drop destination
  297.     at all. Though this attribute defaults to TRUE, this doesnt
  298.     mean that every object automatically aceppts D&D actions,
  299.     because the MUIM_DragQuery method is answered FALSE when
  300.     it arrives at area class.
  301.  
  302.     SEE ALSO
  303.     MUIM_DragQuery
  304. Area.mui/MUIA_ExportID
  305.  
  306.     NAME
  307.     MUIA_ExportID -- (V4 ) [ISG], ULONG (OBSOLETE)
  308.  
  309.     FUNCTION
  310.     Objects with a non NULL MUIA_ExportID export their
  311.     contents during MUIM_Application_Save and import
  312.     them during MUIM_Application_Load.
  313.  
  314.     You have to use different ExportIDs for your objects!
  315.  
  316.     NOTE
  317.     This attribute is renamed to MUIA_ObjectID since
  318.     muimaster.library V12.
  319.  
  320.     SEE ALSO
  321.     MUIM_Application_Save, MUIM_Application_Load
  322. Area.mui/MUIA_FillArea
  323.  
  324.     NAME
  325.     MUIA_FillArea -- (V4 ) [IS.], BOOL
  326.  
  327.     FUNCTION
  328.     Set this if you are a custom class and dont want area class to
  329.     clear your background during the DoSuperMethod() in your
  330.     draw method. Note that if you set this, your draw method
  331.     is responsible for filling every pixel of your objects
  332.     rectangle, otherwise some display trash will remain there.
  333. Area.mui/MUIA_FixHeight
  334.  
  335.     NAME
  336.     MUIA_FixHeight -- (V4 ) [I..], LONG
  337.  
  338.     FUNCTION
  339.     Give your object a fixed pixel height. This tag is
  340.     absolutely not needed in a general MUI application
  341.     and only present for emergency situations. Please
  342.     think twice before using it!
  343.  
  344.     EXAMPLE
  345.     /* create an 8x8 pixel rectangle with FILLPEN */
  346.  
  347.     RectangleObject,
  348.        MUIA_FixWidth  , 8,
  349.        MUIA_FixHeight , 8,
  350.        MUIA_Background, MUII_FILL,
  351.        End;
  352.  
  353.     SEE ALSO
  354.     MUIA_FixWidth, MUIA_FixWidthTxt, MUIA_FixHeightTxt
  355. Area.mui/MUIA_FixHeightTxt
  356.  
  357.     NAME
  358.     MUIA_FixHeightTxt -- (V4 ) [I..], STRPTR
  359.  
  360.     FUNCTION
  361.     Give your object a fixed pixel height. The height
  362.     will match the height of the given string. This tag is
  363.     absolutely not needed in a general MUI application
  364.     and only present for emergency situations. Please
  365.     think twice before using it!
  366.  
  367.     EXAMPLE
  368.     /* create a fixed size rectangle with FILLPEN */
  369.  
  370.     RectangleObject,
  371.        MUIA_FixWidthTxt , "00:00:00",
  372.        MUIA_FixHeightTxt, "\n\n",
  373.        MUIA_Background  , MUII_FILL,
  374.        End;
  375.  
  376.     SEE ALSO
  377.     MUIA_FixHeight, MUIA_FixWidth, MUIA_FixWidthTxt
  378. Area.mui/MUIA_FixWidth
  379.  
  380.     NAME
  381.     MUIA_FixWidth -- (V4 ) [I..], LONG
  382.  
  383.     FUNCTION
  384.     Give your object a fixed pixel width. This tag is
  385.     absolutely not needed in a general MUI application
  386.     and only present for emergency situations. Please
  387.     think twice before using it!
  388.  
  389.     EXAMPLE
  390.     /* create an 8x8 pixel rectangle with FILLPEN */
  391.  
  392.     RectangleObject,
  393.        MUIA_FixWidth  , 8,
  394.        MUIA_FixHeight , 8,
  395.        MUIA_Background, MUII_FILL,
  396.        End;
  397.  
  398.     SEE ALSO
  399.     MUIA_FixHeight, MUIA_FixWidthTxt, MUIA_FixHeightTxt
  400. Area.mui/MUIA_FixWidthTxt
  401.  
  402.     NAME
  403.     MUIA_FixWidthTxt -- (V4 ) [I..], STRPTR
  404.  
  405.     FUNCTION
  406.     Give your object a fixed pixel width. The width
  407.     will match the width of the given string. This tag is
  408.     absolutely not needed in a general MUI application
  409.     and only present for emergency situations. Please
  410.     think twice before using it!
  411.  
  412.     EXAMPLE
  413.     /* create a fixed size rectangle with FILLPEN */
  414.  
  415.     RectangleObject,
  416.        MUIA_FixWidthTxt , "00:00:00",
  417.        MUIA_FixHeightTxt, "\n\n",
  418.        MUIA_Background  , MUII_FILL,
  419.        End;
  420.  
  421.     SEE ALSO
  422.     MUIA_FixHeight, MUIA_FixWidth, MUIA_FixHeightTxt
  423. Area.mui/MUIA_Font
  424.  
  425.     NAME
  426.     MUIA_Font -- (V4 ) [I.G], struct TextFont *
  427.  
  428.     SPECIAL INPUTS
  429.     MUIV_Font_Inherit
  430.     MUIV_Font_Normal
  431.     MUIV_Font_List
  432.     MUIV_Font_Tiny
  433.     MUIV_Font_Fixed
  434.     MUIV_Font_Title
  435.     MUIV_Font_Big
  436.     MUIV_Font_Button
  437.  
  438.     FUNCTION
  439.     Every MUI object can have its own font, just set it with
  440.     this tag. Objects without an explicit font setting will
  441.     inherit it from their parent group.
  442.  
  443.     You normally won't need to open a font yourself, just
  444.     use one of the predefined values to get a font from
  445.     the users preferences.
  446.  
  447.     EXAMPLE
  448.     /* since the text contains tabs,           */
  449.     /* use the fixed width font for displaying */
  450.  
  451.     msgread = FloattextObject,
  452.        MUIA_Font, MUIV_Font_Fixed,
  453.        ...,
  454.        End;
  455. Area.mui/MUIA_Frame
  456.  
  457.     NAME
  458.     MUIA_Frame -- (V4 ) [I..], LONG
  459.  
  460.     SPECIAL INPUTS
  461.     MUIV_Frame_None
  462.     MUIV_Frame_Button
  463.     MUIV_Frame_ImageButton
  464.     MUIV_Frame_Text
  465.     MUIV_Frame_String
  466.     MUIV_Frame_ReadList
  467.     MUIV_Frame_InputList
  468.     MUIV_Frame_Prop
  469.     MUIV_Frame_Gauge
  470.     MUIV_Frame_Group
  471.     MUIV_Frame_PopUp
  472.     MUIV_Frame_Virtual
  473.     MUIV_Frame_Slider
  474.     MUIV_Frame_Count
  475.  
  476.     FUNCTION
  477.     Define a frame for the current object. Since area class
  478.     is a superclass for all elements in a window, you can
  479.     assign frames to every object you wish.
  480.  
  481.     You don't adjust the style of your frame directly,
  482.     instead you only specify a type:
  483.  
  484.     MUIV_Frame_Button
  485.        for standard buttons with text in it.
  486.  
  487.     MUIV_Frame_ImageButton
  488.        for small buttons with images, e.g. the arrows
  489.        of a scrollbar.
  490.  
  491.     MUIV_Frame_Text
  492.        for a text field, e.g. a status line display.
  493.  
  494.     MUIV_Frame_String
  495.        for a string gadget.
  496.  
  497.     MUIV_Frame_ReadList
  498.        for a read only list.
  499.  
  500.     MUIV_Frame_InputList
  501.        for a list that handles input (has a cursor).
  502.  
  503.     MUIV_Frame_Prop
  504.        for proportional gadgets.
  505.  
  506.     MUIV_Frame_Group
  507.        for groups.
  508.  
  509.     How the frame is going to look is adjustable via the
  510.     preferences program.
  511.  
  512.     Four spacing values belong to each frame that tell
  513.     MUI how many pixels should be left free between the
  514.     frame and its contents. These spacing values are also
  515.     user adjustable as long as you don't override them
  516.     with one of MUIA_InnerLeft, MUIA_InnerRight, MUIA_InnerTop,
  517.     or MUIA_InnerBottom.
  518.  
  519.     Note: The first object in a window (MUIA_Window_RootObject)
  520.           may *not* have a frame. If you need this you will have
  521.           to create a dummy group with just one child.
  522.  
  523.     EXAMPLE
  524.     strobj = StringObject,
  525.        MUIA_Frame, MUIV_Frame_String,
  526.        End;
  527.  
  528.     SEE ALSO
  529.     MUIA_InnerLeft, MUIA_InnerRight, MUIA_InnerTop,
  530.     MUIA_InnerBottom
  531. Area.mui/MUIA_FramePhantomHoriz
  532.  
  533.     NAME
  534.     MUIA_FramePhantomHoriz -- (V4 ) [I..], BOOL
  535.  
  536.     FUNCTION
  537.     Setting this to TRUE causes the specified frame to be
  538.     a horizontal phantom frame. The frame will not appear
  539.     but its vertical components (frame height, inner
  540.     top and inner bottom spacing) will be used to calculate
  541.     positions and dimensions (horizontal components are
  542.     treated as 0).
  543.  
  544.     This is extremely useful for a correct labeling of objects.
  545.     You would e.g. label a string gadget by using a text object
  546.     with a phantom string frame. Thus, the label text will
  547.     be always on the same vertical position as the string
  548.     gadget text, no matter what spacing values the user
  549.     configured.
  550.  
  551.     SEE ALSO
  552.     Label() macros in "mui.h".
  553. Area.mui/MUIA_FrameTitle
  554.  
  555.     NAME
  556.     MUIA_FrameTitle -- (V4 ) [I..], STRPTR
  557.  
  558.     FUNCTION
  559.     This tag identifies a text string that will be displayed
  560.     centered in the top line of a frame. This can become
  561.     handy if you want to name groups of objects.
  562.  
  563.     You may not use MUIA_FrameTitle without defining
  564.     a MUIA_Frame.
  565.  
  566.     EXAMPLE
  567.     VGroup,
  568.        MUIA_Frame     , MUIV_Frame_Group,
  569.        MUIA_FrameTitle, "Spacing",
  570.        ...
  571.  
  572.     SEE ALSO
  573.     MUIA_Frame
  574. Area.mui/MUIA_Height
  575.  
  576.     NAME
  577.     MUIA_Height -- (V4 ) [..G], LONG
  578.  
  579.     FUNCTION
  580.     You can use this to read the current position and
  581.     dimension of an object, if you e.g. need it to pop
  582.     up some requester below.
  583.  
  584.     Of course, this attribute is only valid when the
  585.     parent window of the object is currently open.
  586.  
  587.     SEE ALSO
  588.     MUIA_TopEdge, MUIA_Width, MUIA_LeftEdge,
  589.     MUIA_RightEdge, MUIA_BottomEdge
  590. Area.mui/MUIA_HorizDisappear
  591.  
  592.     NAME
  593.     MUIA_HorizDisappear -- (V11) [ISG], LONG
  594.  
  595.     FUNCTION
  596.     Objects with a disappear level disappear automatically
  597.     when their parent window gets too small to display them.
  598.     Use this for things that make your GUI look nicer
  599.     (e.g. Imagery) but are not absolutely necessary.
  600.  
  601.     By using disappearing objects, you can make nice GUIs
  602.     which still work on crappy 640x200 screens.
  603.  
  604.     You can give horizontal or vertical disappear levels
  605.     to objects which are used for horizontal or vertical
  606.     layout calculations respectively.
  607.  
  608.     Objects with a small disappear level disappear before
  609.     objects with a big disappear level.
  610.  
  611.     SEE ALSO
  612.     MUIA_VertDisappear
  613. Area.mui/MUIA_HorizWeight
  614.  
  615.     NAME
  616.     MUIA_HorizWeight -- (V4 ) [ISG], WORD
  617.  
  618.     FUNCTION
  619.     Adjust the horizontal weight of an object. Usually
  620.     you can simply use MUIA_Weight instead of this tag
  621.     but in some two-dimensional groups it may become
  622.     handy to have different horizontal and vertical 
  623.     weights.
  624.  
  625.     SEE ALSO
  626.     MUIA_Weight
  627. Area.mui/MUIA_InnerBottom
  628.  
  629.     NAME
  630.     MUIA_InnerBottom -- (V4 ) [I.G], LONG
  631.  
  632.     FUNCTION
  633.     Adjust the space between an object and its frame.
  634.     Usually you shouldn't use this tag since you will
  635.     override the users preferred default setting.
  636.  
  637.     SEE ALSO
  638.     MUIA_Frame
  639. Area.mui/MUIA_InnerLeft
  640.  
  641.     NAME
  642.     MUIA_InnerLeft -- (V4 ) [I.G], LONG
  643.  
  644.     FUNCTION
  645.     Adjust the space between an object and its frame.
  646.     Usually you shouldn't use this tag since you will
  647.     override the users preferred default setting.
  648.  
  649.     SEE ALSO
  650.     MUIA_Frame
  651. Area.mui/MUIA_InnerRight
  652.  
  653.     NAME
  654.     MUIA_InnerRight -- (V4 ) [I.G], LONG
  655.  
  656.     FUNCTION
  657.     Adjust the space between an object and its frame.
  658.     Usually you shouldn't use this tag since you will
  659.     override the users preferred default setting.
  660.  
  661.     SEE ALSO
  662.     MUIA_Frame
  663. Area.mui/MUIA_InnerTop
  664.  
  665.     NAME
  666.     MUIA_InnerTop -- (V4 ) [I.G], LONG
  667.  
  668.     FUNCTION
  669.     Adjust the space between an object and its frame.
  670.     Usually you shouldn't use this tag since you will
  671.     override the users preferred default setting.
  672.  
  673.     SEE ALSO
  674.     MUIA_Frame
  675. Area.mui/MUIA_InputMode
  676.  
  677.     NAME
  678.     MUIA_InputMode -- (V4 ) [I..], LONG
  679.  
  680.     SPECIAL INPUTS
  681.     MUIV_InputMode_None
  682.     MUIV_InputMode_RelVerify
  683.     MUIV_InputMode_Immediate
  684.     MUIV_InputMode_Toggle
  685.  
  686.     FUNCTION
  687.     Adjust the input mode for an object.
  688.  
  689.     MUI has no distinct button class. Instead you can make
  690.     every object (even groups) behave like a button by
  691.     setting an input mode for them. Several input modes
  692.     area available:
  693.  
  694.     MUIV_InputMode_None:
  695.        No input, this is not a gadget.
  696.  
  697.     MUIV_InputMode_RelVerify:
  698.        For buttons and similar stuff.
  699.  
  700.     MUIV_InputMode_Immediate:
  701.        Used e.g. in a radio button object.
  702.  
  703.     MUIV_InputMode_Toggle:
  704.        For things like checkmark gadgets.
  705.  
  706.     The input mode setting determines how a user action
  707.     will trigger the attributes MUIA_Selected, MUIA_Pressed
  708.     and MUIA_Timer. See their documentation for details.
  709.  
  710.     EXAMPLE
  711.     /* A traditional button, just a text object with */
  712.     /* a button frame and a relverify input mode:    */
  713.  
  714.     okbutton = TextObject,
  715.        MUIA_Frame        , MUIV_Frame_Button,
  716.        MUIA_InputMode    , MUIV_InputMode_RelVerify,
  717.        MUIA_Text_Contents, "OK",
  718.        ...
  719.  
  720.     SEE ALSO
  721.     MUIA_Selected, MUIA_Timer, MUIA_Pressed
  722. Area.mui/MUIA_LeftEdge
  723.  
  724.     NAME
  725.     MUIA_LeftEdge -- (V4 ) [..G], LONG
  726.  
  727.     FUNCTION
  728.     You can use this to read the current position and
  729.     dimension of an object, if you e.g. need it to pop
  730.     up some requester below.
  731.  
  732.     Of course, this attribute is only valid when the
  733.     parent window of the object is currently open.
  734.  
  735.     SEE ALSO
  736.     MUIA_TopEdge, MUIA_Width, MUIA_Height,
  737.     MUIA_RightEdge, MUIA_BottomEdge
  738. Area.mui/MUIA_MaxHeight
  739.  
  740.     NAME
  741.     MUIA_MaxHeight -- (V11) [I..], LONG
  742.  
  743.     FUNCTION
  744.     Specify a maximum height for an object (in pixels).
  745.  
  746.     SEE ALSO
  747.     MUIA_MaxWidth, MUIA_FixWidth, MUIA_FixHeight
  748. Area.mui/MUIA_MaxWidth
  749.  
  750.     NAME
  751.     MUIA_MaxWidth -- (V11) [I..], LONG
  752.  
  753.     FUNCTION
  754.     Specify a maximum width for an object (in pixels).
  755.  
  756.     SEE ALSO
  757.     MUIA_MaxHeight, MUIA_FixWidth, MUIA_FixHeight
  758. Area.mui/MUIA_Pressed
  759.  
  760.     NAME
  761.     MUIA_Pressed -- (V4 ) [..G], BOOL
  762.  
  763.     FUNCTION
  764.     Learn if a button is pressed (or released).
  765.     The MUIA_Pressed attribute of a gadget is triggered
  766.     by some user action, depending on the input mode:
  767.  
  768.     MUIV_InputMode_RelVerify:
  769.        - set when lmb is pressed.
  770.        - cleared when lmb is released and the mouse
  771.          is still over the gadget (otherwise it will
  772.          be cleared too, but without triggering a
  773.          notification event).
  774.  
  775.     MUIV_InputMode_Immediate:
  776.        - undefined, use MUIA_Selected for this.
  777.  
  778.     MUIV_InputMode_Toggle:
  779.        - undefined, use MUIA_Selected for this.
  780.  
  781.     Waiting for MUIA_Pressed getting FALSE is the usual
  782.     way to react on button gadgets.
  783.  
  784.     EXAMPLE
  785.     DoMethod(btcancel,MUIM_Notify,MUIA_Pressed,FALSE,
  786.        app,2,MUIM_Application_ReturnID,ID_CANCEL);
  787.  
  788.     SEE ALSO
  789.     MUIA_Selected, MUIA_Timer, MUIA_ShowSelState, MUIA_InputMode
  790. Area.mui/MUIA_RightEdge
  791.  
  792.     NAME
  793.     MUIA_RightEdge -- (V4 ) [..G], LONG
  794.  
  795.     FUNCTION
  796.     You can use this to read the current position and
  797.     dimension of an object, if you e.g. need it to pop
  798.     up some requester below.
  799.  
  800.     Of course, this attribute is only valid when the
  801.     parent window of the object is currently open.
  802.  
  803.     SEE ALSO
  804.     MUIA_TopEdge, MUIA_Width, MUIA_Height,
  805.     MUIA_LeftEdge, MUIA_BottomEdge
  806. Area.mui/MUIA_Selected
  807.  
  808.     NAME
  809.     MUIA_Selected -- (V4 ) [ISG], BOOL
  810.  
  811.     FUNCTION
  812.     Get and set the selected state of a gadget.
  813.     This attribute can be triggered by the user
  814.     clicking on the gadget (or using the keyboard),
  815.     depending on the input mode:
  816.  
  817.     MUIV_InputMode_RelVerify:
  818.        - set when lmb is pressed.
  819.        - cleared when lmb is released.
  820.        - cleared when the gadget is selected and the
  821.          mouse leaves the gadget box.
  822.        - set when the mouse reenters the gadget box.
  823.  
  824.     MUIV_InputMode_Immediate:
  825.        - set when lmb is pressed.
  826.  
  827.     MUIV_InputMode_Toggle:
  828.        - toggled when lmb is pressed.
  829.  
  830.     Of course you may set this attribute yourself, e.g.
  831.     to adjust the state of a checkmark gadget.
  832.  
  833.     A selected gadget will display its border reverse
  834.     and get the configured MUII_SelectedBack background.
  835.     This can be avoided using the MUIA_ShowSelState tag.
  836.  
  837.     SEE ALSO
  838.     MUIA_Pressed, MUIA_Timer, MUIA_ShowSelState, MUIA_InputMode
  839. Area.mui/MUIA_ShortHelp
  840.  
  841.     NAME
  842.     MUIA_ShortHelp -- (V11) [ISG], STRPTR
  843.  
  844.     FUNCTION
  845.     Specify a string that is to be used as bubble help for this
  846.     object.
  847. Area.mui/MUIA_ShowMe
  848.  
  849.     NAME
  850.     MUIA_ShowMe -- (V4 ) [ISG], BOOL
  851.  
  852.     FUNCTION
  853.     Objects with this attribute set are not displayed. You can
  854.     set MUIA_ShowMe at any time, causing objects to appear and
  855.     to disappear immediately. A new layout is calculated whenever
  856.     some objects are shown or hidden. When necessary, MUI will
  857.     resize the parent window to make place for the new objects.
  858.  
  859.     NOTE
  860.     Currently, MUI does a complete window refresh after
  861.     showing/hiding objects. This behaviour might get improved
  862.     in the future.
  863. Area.mui/MUIA_ShowSelState
  864.  
  865.     NAME
  866.     MUIA_ShowSelState -- (V4 ) [I..], BOOL
  867.  
  868.     FUNCTION
  869.     Normally a gadget will reverse its frame and
  870.     display the configured MUII_SelectetBack background
  871.     pattern in its selected state. For some objects
  872.     (e.g. checkmarks) this is not recommended and
  873.     can be supressed by setting MUIA_ShowSelState
  874.     to FALSE.
  875.  
  876.     SEE ALSO
  877.     MUIA_Selected
  878. Area.mui/MUIA_Timer
  879.  
  880.     NAME
  881.     MUIA_Timer -- (V4 ) [..G], LONG
  882.  
  883.     FUNCTION
  884.     MUIA_Timer gets triggered when a relverify button is 
  885.     pressed and (after a little delay) increases every 
  886.     INTUITICK as long as the mouse remains over the gadget.
  887.  
  888.     This makes it possible to have buttons repeatedly
  889.     cause some actions, just like the arrow gadgets of
  890.     a scrollbar.
  891.  
  892.     EXAMPLE
  893.     DoMethod(btmore,MUIM_Notify,MUIA_Timer,MUIV_EveryTime,
  894.        app,2,MUIM_Application_ReturnID,ID_MORE);
  895.  
  896.     DoMethod(btless,MUIM_Notify,MUIA_Timer,MUIV_EveryTime,
  897.        app,2,MUIM_Application_ReturnID,ID_LESS);
  898.  
  899.     SEE ALSO
  900.     MUIA_Pressed, MUIA_Selected
  901. Area.mui/MUIA_TopEdge
  902.  
  903.     NAME
  904.     MUIA_TopEdge -- (V4 ) [..G], LONG
  905.  
  906.     FUNCTION
  907.     You can use this to read the current position and
  908.     dimension of an object, if you e.g. need it to pop
  909.     up some requester below.
  910.  
  911.     Of course, this attribute is only valid when the
  912.     parent window of the object is currently open.
  913.  
  914.     SEE ALSO
  915.     MUIA_LeftEdge, MUIA_Width, MUIA_Height,
  916.     MUIA_RightEdge, MUIA_BottomEdge
  917. Area.mui/MUIA_VertDisappear
  918.  
  919.     NAME
  920.     MUIA_VertDisappear -- (V11) [ISG], LONG
  921.  
  922.     FUNCTION
  923.     Objects with a disappear level disappear automatically
  924.     when their parent window gets too small to display them.
  925.     Use this for things that make your GUI look nicer
  926.     (e.g. Imagery) but are not absolutely necessary.
  927.  
  928.     By using disappearing objects, you can make nice GUIs
  929.     which still work on crappy 640x200 screens.
  930.  
  931.     You can give horizontal or vertical disappear levels
  932.     to objects which are used for horizontal or vertical
  933.     layout calculations respectively.
  934.  
  935.     Objects with a small disappear level disappear before
  936.     objects with a big disappear level.
  937.  
  938.     SEE ALSO
  939.     MUIA_HorizDisappear
  940. Area.mui/MUIA_VertWeight
  941.  
  942.     NAME
  943.     MUIA_VertWeight -- (V4 ) [ISG], WORD
  944.  
  945.     FUNCTION
  946.     Adjust the vertical weight of an object. Usually
  947.     you can simply use MUIA_Weight instead of this tag
  948.     but in some two-dimensional groups it may become
  949.     handy to have different horizontal and vertical
  950.     weights.
  951.  
  952.     SEE ALSO
  953.     MUIA_Weight
  954. Area.mui/MUIA_Weight
  955.  
  956.     NAME
  957.     MUIA_Weight -- (V4 ) [I..], WORD
  958.  
  959.     FUNCTION
  960.     This tag is a shorthand for MUIA_HorizWeight and
  961.     MUIA_VertWeight, it sets both weights at once.
  962.  
  963.     The weight of an object determines how much room it
  964.     will get during the layout process. Imagine you have
  965.     a 100 pixel wide horizontal group with two string
  966.     gadgets. Usually, each gadget will get half of the
  967.     room and be 50 pixels wide. If you feel the left
  968.     gadget is more important and should be bigger,
  969.     you can give it a weight of 200 (and 100 for
  970.     the right gadget). Because the left gadget is
  971.     twice as "heavy" as the right gadget, it will
  972.     become twice as big (about 66 pixel) as the
  973.     right one (34 pixel).
  974.  
  975.     Of course giving weights only makes sense if the
  976.     object is resizable. A MUIA_VertWeight for a
  977.     (always fixed height) string gadget is useless.
  978.  
  979.     An object with a weight of 0 will always stay
  980.     at its minimum size.
  981.  
  982.     By default, all objects have a weight of 100.
  983.  
  984.     EXAMPLE
  985.     HGroup,
  986.        StringGadget, MUIA_Weight,  50, End,
  987.        StringGadget, MUIA_Weight, 100, End,
  988.        StringGadget, MUIA_Weight, 200, End,
  989.        End;
  990.  
  991.     SEE ALSO
  992.     MUIA_HorizWeight, MUIA_VertWeight
  993. Area.mui/MUIA_Width
  994.  
  995.     NAME
  996.     MUIA_Width -- (V4 ) [..G], LONG
  997.  
  998.     FUNCTION
  999.     You can use this to read the current position and
  1000.     dimension of an object, if you e.g. need it to pop
  1001.     up some requester below.
  1002.  
  1003.     Of course, this attribute is only valid when the
  1004.     parent window of the object is currently open.
  1005.  
  1006.     SEE ALSO
  1007.     MUIA_TopEdge, MUIA_LeftEdge, MUIA_Height,
  1008.     MUIA_RightEdge, MUIA_BottomEdge
  1009. Area.mui/MUIA_Window
  1010.  
  1011.     NAME
  1012.     MUIA_Window -- (V4 ) [..G], struct Window *
  1013.  
  1014.     FUNCTION
  1015.     This attribute can be used to get a pointer to the
  1016.     intuition window structure of the parent window 
  1017.     ot the object. This pointer could e.g. be used
  1018.     in calls to asl.library.
  1019.  
  1020.     The result is only valid when the window is opened.
  1021.  
  1022.     SEE ALSO
  1023.     MUIA_Window_Window
  1024. Area.mui/MUIA_WindowObject
  1025.  
  1026.     NAME
  1027.     MUIA_WindowObject -- (V4 ) [..G], Object *
  1028.  
  1029.     FUNCTION
  1030.     You can obtain a pointer to the window object
  1031.     that some gadget belongs to by using this attribute.
  1032.     Useful mainly within callback hooks if you do not want
  1033.     to deal with global variables.
  1034.  
  1035.     SEE ALSO
  1036.     MUIA_ApplicationObject
  1037. Area.mui/MUIM_AskMinMax
  1038.  
  1039.     NAME
  1040.     MUIM_AskMinMax (V4 )
  1041.     [For use within custom classes only]
  1042.  
  1043.     SYNOPSIS
  1044.     DoMethod(obj,MUIM_AskMinMax,struct MUI_MinMax *MinMaxInfo);
  1045.  
  1046.     FUNCTION
  1047.     see developer documentation.
  1048. Area.mui/MUIM_Cleanup
  1049.  
  1050.     NAME
  1051.     MUIM_Cleanup (V4 )
  1052.     [For use within custom classes only]
  1053.  
  1054.     SYNOPSIS
  1055.     DoMethod(obj,MUIM_Cleanup,);
  1056.  
  1057.     FUNCTION
  1058.     see developer documentation.
  1059. Area.mui/MUIM_ContextMenuBuild
  1060.  
  1061.     NAME
  1062.     MUIM_ContextMenuBuild (V11)
  1063.  
  1064.     SYNOPSIS
  1065.     DoMethod(obj,MUIM_ContextMenuBuild,LONG mx, LONG my);
  1066.  
  1067.     FUNCTION
  1068.     Allows dynamic creation of context menus.
  1069.     When MUI is about to show a new context menu, it does not
  1070.     simply use the MUIA_ContextMenu field of area class. Instead,
  1071.     it sends a MUIM_ContextMenuBuild to the object in question and
  1072.     uses the return value as the new menustrip object.
  1073.  
  1074.     When MUIM_ContextMenuBuild reaches area class, it just return
  1075.     the contents of MUIA_ContextMenu so you neednt care about this
  1076.     method if you only have static, non-changing context menus.
  1077.  
  1078.     However, if your context menus depend on some internal states
  1079.     of your objects or on the mouse position within your objects,
  1080.     you have to have a subclass which overrides
  1081.     MUIM_ContextMenuBuild, creates a nice menustrip object and
  1082.     returns it.
  1083.  
  1084.     INPUTS
  1085.     mx - current x position of mouse
  1086.     my - current y position of mouse
  1087.  
  1088.     Since MUI does (unfortunately) not use relative coordinates 
  1089.     at all, these two aren't relative either.
  1090.  
  1091.     RESULT
  1092.     You must return a pointer to a menustrip object or NULL if
  1093.     you failed to create one.
  1094.  
  1095.     NOTES
  1096.     MUI will never dispose the object you return. You must be
  1097.     take care of this yourself, e.g. by storing a pointer somewhere
  1098.     in your instance data and killing it on the next invocation
  1099.     of MUIM_ContextMenuBuild and on OM_DISPOSE.
  1100.  
  1101.     Even when overriding MUIM_ContextMenuBuild, you *must* set
  1102.     MUIA_ContextMenu of your object to something different from NULL.
  1103.     MUI will find out that your object actually has a popup menu
  1104.     by directly checking the contents of MUIA_ContextMenu in the
  1105.     instance data of area class due to speed reasons.
  1106.  
  1107.     SEE ALSO
  1108.     MUIA_ContextMenu, MUIA_ContextMenuTrigger, MUIM_ContextMenuChoice,
  1109. Area.mui/MUIM_ContextMenuChoice
  1110.  
  1111.     NAME
  1112.     MUIM_ContextMenuChoice (V11)
  1113.  
  1114.     SYNOPSIS
  1115.     DoMethod(obj,MUIM_ContextMenuChoice,Object *item);
  1116.  
  1117.     FUNCTION
  1118.     Allows reacting on context menus in subclasses.
  1119.  
  1120.     See MUIA_ContextMenu for details.
  1121.  
  1122.     SEE ALSO
  1123.     MUIA_ContextMenuTrigger, MUIM_ContextMenuChoice,
  1124.     MUIM_ContextMenuBuild
  1125. Area.mui/MUIM_DragBegin
  1126.  
  1127.     NAME
  1128.     MUIM_DragBegin (V11)
  1129.  
  1130.     SYNOPSIS
  1131.     DoMethod(obj,MUIM_DragBegin,Object *obj);
  1132.  
  1133.     FUNCTION
  1134.     Inform an object that it has become the active destination
  1135.     of a drag&drop action. An object will only receive this if
  1136.     it has responded positively to a previous MUIM_DragQuery.
  1137.  
  1138.     SEE ALSO
  1139.     MUIM_DragQuery, MUIM_DragFinish, MUIM_DragReport, MUIM_DragDrop
  1140. Area.mui/MUIM_DragDrop
  1141.  
  1142.     NAME
  1143.     MUIM_DragDrop (V11)
  1144.  
  1145.     SYNOPSIS
  1146.     DoMethod(obj,MUIM_DragDrop,Object *obj, LONG x, LONG y);
  1147.  
  1148.     FUNCTION
  1149.         Indicate that the user dropped something on the current
  1150.     object.
  1151.  
  1152.     SEE ALSO
  1153.     MUIM_DragBegin, MUIM_DragFinish, MUIM_DragReport, MUIM_DragQuery
  1154. Area.mui/MUIM_DragFinish
  1155.  
  1156.     NAME
  1157.     MUIM_DragFinish (V11)
  1158.  
  1159.     SYNOPSIS
  1160.     DoMethod(obj,MUIM_DragFinish,Object *obj);
  1161.  
  1162.     FUNCTION
  1163.     Indicate that an object is no longer the active destination
  1164.     object of a drag&drop action.
  1165.  
  1166.     SEE ALSO
  1167.     MUIM_DragQuery, MUIM_DragBegin, MUIM_DragReport, MUIM_DragDrop
  1168. Area.mui/MUIM_DragQuery
  1169.  
  1170.     NAME
  1171.     MUIM_DragQuery (V11)
  1172.  
  1173.     SYNOPSIS
  1174.     DoMethod(obj,MUIM_DragQuery,Object *obj);
  1175.  
  1176.     FUNCTION
  1177.     MUI offers complete drag & drop capabilities for every object.
  1178.     If enabled, the user is able to grab an object, drag it around
  1179.     and drop it on another object. Currently, D&D is limited to
  1180.     single applications, i.e. you cannot take an object from one
  1181.     program and drop it into another one. D&D between different
  1182.     windows of the same application, however, is fine.
  1183.  
  1184.     MUI controls the D&D actions with a set of five methods:
  1185.     MUIM_DragQuery, MUIM_DragBegin, MUIM_DragReport, MUIM_DragDrop
  1186.     and MUIM_DragFinish. Basically things work this way:
  1187.  
  1188.     Lets assume the user has taken an object (called the source
  1189.     object) and is now starting to drag it around. During
  1190.     dragging, MUI will find out which object is currently under
  1191.     the mouse pointer and if it found one, send it the
  1192.     MUIM_DragQuery method. An object that receives MUIM_DragQuery
  1193.     can now determine it it wishes to accept drops from the source
  1194.     object or not. If it responds positively, the object will
  1195.     become the current destination object.
  1196.  
  1197.     Due to the nature of MUIs layout system, a specific x,y pair
  1198.     of coordinates cannot be bound to a specific object
  1199.     immediately. Instead, the coordinates belong to a whole tree
  1200.     of objects, for example some cycle gadget, its parent group,
  1201.     the parent group of the parent group and so on until the tree
  1202.     reaches the windows root object. To allow complete groups of
  1203.     objects to participate in D&D business, the MUIM_DragQuery is
  1204.     first sent to the deepest nested object (the cycle gadget in
  1205.     the above example). If this one doesn't respond, MUI sends a
  1206.     MUIM_DragQuery to its parent group and so on until it either
  1207.     finds some object who accepts the drop or reaches the end of
  1208.     the tree. If there is an accepting object, it will become the
  1209.     current destination, if there isnt, no destination will be
  1210.     set.
  1211.  
  1212.     Objects becoming active destinations of a drag process learn
  1213.     about their current state by receiving a MUIM_DragBegin
  1214.     method. This method, when reaching area class, e.g. draws a
  1215.     special frame around the object to indicate the current state
  1216.     to the user.
  1217.  
  1218.     The opposite of MUIM_DragBegin is MUIM_DragFinish will be sent
  1219.     as soon as the object stops being destination of the drag
  1220.     process, i.e. because the user aborted the drag or moved out
  1221.     of the bounding box. MUIM_DragFinish will also be sent after a
  1222.     successful drop, you cant count on receiving a MUIM_DragFinish
  1223.     if you received a MUIM_DragBegin before. Furthermore, only one
  1224.     object will be between MUIM_DragBegin and MUIM_DragFinish at
  1225.     any time.
  1226.  
  1227.     Active destination objects (between MUIM_DragBegin and
  1228.     MUIM_DragFinish) receive MUIM_DragReport methods as long as
  1229.     the user moves the mouse within the object. MUIM_DragReport
  1230.     contains the mouse coordinates, so the object can update its
  1231.     display according to the position of the source object. A
  1232.     listview would e.g. indicate the insert position to give the
  1233.     user an idea where the source would be inserted in case of a
  1234.     drop.
  1235.  
  1236.     All the method mentioned above are just interim messages that
  1237.     help visualizing the drag process. When the user actually
  1238.     decides to drop its source object, the current destination
  1239.     object (if any) receives a MUIM_DragDrop method and can
  1240.     perfrom whatever operatoin it thinks is suited to handle a D&D
  1241.     action from the source object.
  1242.  
  1243.     You probably have noticed that D&D is controlled by methods.
  1244.     This means that you need to write subclasses if you intend to
  1245.     use it. However, you neednt implement all the above mentioned
  1246.     things to reach your goal. In fact, MUIM_DragQuery and
  1247.     MUIM_DragDrop are enough for almost all D&D invocations.
  1248.     Here's a little example of how MUI implements D&D between
  1249.     objects of Pendisplay class. These few lines allow the user to
  1250.     take any Pendisplay (or subclasses from Pendisplay like e.g.
  1251.     Poppen class) and drop it onto another one:
  1252.  
  1253.     ULONG mDragQuery(cl,obj,struct MUIP_DragQuery *msg)
  1254.     {
  1255.         char *spec;
  1256.  
  1257.         /* refuse to drop on ourselves */
  1258.         if (msg->obj==obj)
  1259.             return(MUIV_DragQuery_Refuse);
  1260.  
  1261.         /* if the source object offers the attribute */
  1262.         /* we want, show that we would accept it. */
  1263.         if (get(msg->obj,MUIA_Pendisplay_Spec,&spec))
  1264.             return(MUIV_DragQuery_Accept);
  1265.  
  1266.         /* refuse otherwise */
  1267.         return(MUIV_DragQuery_Refuse);
  1268.     }
  1269.  
  1270.  
  1271.     ULONG mDragDrop(cl,obj,struct MUIP_DragDrop *msg)
  1272.     {
  1273.         char *spec;
  1274.  
  1275.         /* copy the attribute from the source object */
  1276.         get(msg->obj,MUIA_Pendisplay_Spec,&spec);
  1277.         set(obj,MUIA_Pendisplay_Spec,spec);
  1278.  
  1279.         return(0);
  1280.     }
  1281.  
  1282.     SEE ALSO
  1283.     MUIM_DragBegin, MUIM_DragFinish, MUIM_DragReport, MUIM_DragDrop
  1284. Area.mui/MUIM_DragReport
  1285.  
  1286.     NAME
  1287.     MUIM_DragReport (V11)
  1288.  
  1289.     SYNOPSIS
  1290.     DoMethod(obj,MUIM_DragReport,Object *obj, LONG x, LONG y, LONG update);
  1291.  
  1292.     FUNCTION
  1293.     Interim messages from MOUSEMOVEs and INTUITICKs sent as long
  1294.     as an object is active destination of a drag&drop action.
  1295.  
  1296.     SEE ALSO
  1297.     MUIM_DragQuery, MUIM_DragFinish, MUIM_DragBegin, MUIM_DragDrop
  1298. Area.mui/MUIM_Draw
  1299.  
  1300.     NAME
  1301.     MUIM_Draw (V4 )
  1302.     [For use within custom classes only]
  1303.  
  1304.     SYNOPSIS
  1305.     DoMethod(obj,MUIM_Draw,ULONG flags);
  1306.  
  1307.     FUNCTION
  1308.     see developer documentation.
  1309. Area.mui/MUIM_DrawBackground
  1310.  
  1311.     NAME
  1312.     MUIM_DrawBackground (V11)
  1313.  
  1314.     SYNOPSIS
  1315.     DoMethod(obj,MUIM_DrawBackground,LONG left, LONG top, LONG width, LONG height, LONG xoffset, LONG yoffset, LONG flags);
  1316.  
  1317.     FUNCTION
  1318.     If you decided to use MUIA_FillArea, FALSE for your custom
  1319.     class, i.e. if you care about background rendering yourself,
  1320.     you can use this method to draw a specific part of your
  1321.     objects background with the defined MUIA_Background.
  1322.  
  1323.     INPUTS
  1324.     - left, top, right, bottom: rectangle to draw, be sure to
  1325.       add your objects _mleft and _mtop coordinates.
  1326.  
  1327.     - xoffset, yoffset: offset to use when background is a pattern.
  1328.  
  1329.     - flags: always set to 0 for now!
  1330.  
  1331.     RESULT
  1332.     The result value of this method is currently undefined.
  1333.  
  1334.     SEE ALSO
  1335.     MUIA_Background
  1336. Area.mui/MUIM_HandleEvent
  1337.  
  1338.     NAME
  1339.     MUIM_HandleEvent (V16)
  1340.     [For use within custom classes only]
  1341.  
  1342.     SYNOPSIS
  1343.     DoMethod(obj,MUIM_HandleEvent,struct IntuiMessage *imsg, LONG muikey);
  1344.  
  1345.     FUNCTION
  1346.     This method is invoked whenever one of an event handlers
  1347.     trigger signals arrives. It's described in area class
  1348.     context but does not really belong here.
  1349.  
  1350.     INPUTS
  1351.     imsg - pointer to a struct IntuiMessage that caused the event.
  1352.            note well that this may be NULL in which case you
  1353.            simply not parse imsg.
  1354.  
  1355.     muikey - if the imsg translates to a predefined keystroke,
  1356.              this parameter holds the corresponding MUIKEY_XXXX
  1357.              value. Otherwise it will be MUIKEY_NONE.
  1358.  
  1359.     NOTES
  1360.     You must not rely on imsg being non-NULL, regardless whether
  1361.     muikey is set or unset.
  1362.  
  1363.     RESULT
  1364.     The result is a bitfield. Currently, only one bit is defined:
  1365.  
  1366.     - MUI_EventHandlerRC_Eat
  1367.       Set this if this event was for you and you want MUI to stop
  1368.       calling other event handlers in the chain.
  1369.  
  1370.     All other bits are reserved for future use and must be zero!
  1371.  
  1372.     SEE ALSO
  1373.     window.mui/MUIM_Window_AddEventHandler
  1374. Area.mui/MUIM_HandleInput
  1375.  
  1376.     NAME
  1377.     MUIM_HandleInput (V4 )
  1378.     [For use within custom classes only]
  1379.  
  1380.     SYNOPSIS
  1381.     DoMethod(obj,MUIM_HandleInput,struct IntuiMessage *imsg, LONG muikey);
  1382.  
  1383.     FUNCTION
  1384.     see developer documentation.
  1385. Area.mui/MUIM_Hide
  1386.  
  1387.     NAME
  1388.     MUIM_Hide (V4 )
  1389.     [For use within custom classes only]
  1390.  
  1391.     SYNOPSIS
  1392.     DoMethod(obj,MUIM_Hide,);
  1393.  
  1394.     FUNCTION
  1395.     see developer documentation.
  1396. Area.mui/MUIM_Setup
  1397.  
  1398.     NAME
  1399.     MUIM_Setup (V4 )
  1400.     [For use within custom classes only]
  1401.  
  1402.     SYNOPSIS
  1403.     DoMethod(obj,MUIM_Setup,struct MUI_RenderInfo *RenderInfo);
  1404.  
  1405.     FUNCTION
  1406.     see developer documentation.
  1407. Area.mui/MUIM_Show
  1408.  
  1409.     NAME
  1410.     MUIM_Show (V4 )
  1411.     [For use within custom classes only]
  1412.  
  1413.     SYNOPSIS
  1414.     DoMethod(obj,MUIM_Show,);
  1415.  
  1416.     FUNCTION
  1417.     see developer documentation.
  1418.